package com.jungle.base.service;

import com.jungle.base.domain.bo.BaseUserBo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;

import java.util.List;
import java.util.Optional;

public interface BaseService<P,B, ID> {

    // 1、增改操作
    P saveOrUpdate(B bo, BaseUserBo userBo);

    // 2、删除操作
    void delete(P entity);
    void deleteAll(Iterable<P> entities);
    void deleteById(ID id);
    void deleteAllById(Iterable<ID> ids);



    // 3、查询操作
    Optional<P> findById(ID id);
    List<P> findAllById(Iterable<ID> ids);
    List<P> findAll(Specification<P> spec);
    Page<P> findAll(Specification<P> spec, Pageable pageable);
    List<P> findAll(Specification<P> spec, Sort sort);
}
